import router from "@/router";
import storage from "./storage";
import store from "@/store";
//判断本地是否有token,如果有,那么就放行

router.beforeEach((to, from, next) => {
  // console.log(to);
  let token = storage.get("qf-token");
  //to 是目标路由对象
  //from 是源路由对象
  //next 是个函数,调用之后,可以理解为直接放行
  // console.log(to);
  // 如果有携带令牌
  if (token) {
    // 已经登入,直接放行
    if (!store.state.permission.userMenu.length) {
      store.dispatch("permission/FETCH_MENU_LIST").then(() => {
        //这里要注意,next里面要传参数即要进入的页面的路由信息,因为next传参数后当前要进入的路由会被废止,转而进入参数对应的路由,虽然是同一个路由,这么做主要是为了确保addRoute生效了,并且不产生历史记录
        next({ path: to.path, replace: true });
      });
    } else {
      next();
    }
  } else {
    //没有token, 两种情况
    //1,访问的是登入页
    if (to.path === "/login") {
      // 放行
      next();
    } else {
      // 2,访问的不是登入页,强行调回登入页
      next({ path: "/login" });
    }
  }
});

export default router;
